SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[LIQAyudaEscolar]
@Agente int,
@Servicio int,
@Plaza int,
@Resultado float output,
@idLiquidacion int,
@DiasALiquidar int,
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
 AS 

SET NOCOUNT ON
SET DATEFORMAT dmy

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 17/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
-- 05/02/2007 - Agregamos Nivel Polimodal (7), y modificamos edad minima 
-- 29/04/2010 - Agregamos Nivel Primario, Secundario
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------
-- FALTA CONFIRMAR LAS RESTRICCIONES DE LOS HIJOS (EDAD, NIVEL)
---------------------------------------------------

PRINT ' SE LIQUIDA AYUDA ESCOLAR'
DECLARE @ubicacionOrig INT
DECLARE @grupo INT
DECLARE @sueldoBasico DECIMAL(18,4)
DECLARE @Afiliacion INT
DECLARE @Organizacion INT
DECLARE @SituacionRevista INT
DECLARE @horas INT
DECLARE @regimensalarial INT
DECLARE @hijos INT
DECLARE @AyudaEscolar DECIMAL(18,4)
DECLARE @NroError INT
DECLARE @SubOrganizacion INT
DECLARE @CabeceraDeLiquidacion INT
DECLARE @HijosIncapacitados INT 
DECLARE @ImportePorHijo DECIMAL(18,4)
DECLARE @ImportePorHijoIncapacitado DECIMAL(18,4)
DECLARE @IdCabecera INT

SELECT @IdCabecera = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion

-- Si ya no se le pago y ademas no tiene servicios publicos.
IF NOT EXISTS(SELECT Servicio FROM tb_RegistroDeLiquidaciones RL 
	INNER JOIN tb_Liquidaciones L ON L.IdLiquidacion = RL.Liquidacion 
	WHERE RL.Agente = @Agente AND Concepto = 31 AND IdCabeceraLiquidacion = @IdCabecera)
AND NOT EXISTS(SELECT Agente FROM tb_ServiciosAgentes S INNER JOIN tb_SubServiciosAgentes ON idServicioAgente = ServicioAgente
	INNER JOIN tb_Organizaciones ON idOrganizaciones = UbicacionOrig
	WHERE Agente = @Agente AND (EsPrivada = 'N' OR EsPrivada IS NULL) AND ( (S.FechaBaja IS NULL) OR (S.FechaBaja IS NOT NULL AND S.FechaBaja > GETDATE())))
BEGIN

	SELECT @NroError = 0
	SELECT @AyudaEscolar = 0

	SELECT @ubicacionOrig = ubicacionOrig FROM tb_ServiciosAgentes WHERE idservicioAgente = @Servicio
	SELECT @Grupo = zona FROM tb_SubOrganizaciones WHERE org = @ubicacionOrig
	SELECT @SueldoBasico=MontoHaberes FROM tb_RegistroDeLiquidaciones WHERE liquidacion = @idLiquidacion and Concepto = 4 and Servicio = @Servicio --Sueldo Basico

	--SELECT @ImportePorHijo = CONVERT(DECIMAL(18,4), Valor1) FROM tb_Parametros WHERE Parametro = 'ImporteDeAyudaEscolarPorHijo'
	--SELECT @ImportePorHijoIncapacitado = CONVERT(DECIMAL(18,4), Valor1) FROM tb_Parametros WHERE Parametro = 'ImporteDeAyudaEscolarPorHijoDiscapacitado'

	SELECT @ImportePorHijo = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ImporteDeAyudaEscolarPorHijo', @Hasta))
	SELECT @ImportePorHijoIncapacitado = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ImporteDeAyudaEscolarPorHijoDiscapacitado', @Hasta))

	SELECT @Hijos = COUNT(idFamiliar) FROM tb_FamiliaresACargo WHERE idAgente = @Agente AND Parentezco = 2 AND CorrespondeAsignacionFamiliar = 'S' AND nivelactual IN (1,2,5,6,7)
		AND DATEDIFF(YEAR, FechaDeNacimiento, @Hasta) >= 4 AND NivelActual IS NOT NULL  AND EsDiscapacitado = 'N'

	SELECT @HijosIncapacitados = COUNT(idFamiliar) FROM tb_FamiliaresACargo WHERE idAgente = @Agente AND Parentezco = 2 AND CorrespondeAsignacionFamiliar = 'S' AND nivelactual IN (1,2,5,6,7)
		AND NivelActual IS NOT NULL  AND EsDiscapacitado = 'S' 

	IF @Hijos > 0
		SELECT @AyudaEscolar = @Hijos * @ImportePorHijo

	IF @HijosIncapacitados > 0
		SELECT @AyudaEscolar = @AyudaEscolar + (@HijosIncapacitados * @ImportePorHijoIncapacitado)

	SELECT @Afiliacion = idAfiliacion FROM tb_Afiliaciones WHERE idAgente = @Agente
	SELECT @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion FROM tb_Plazas WHERE idPlaza = @Plaza
	SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio

	IF (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion) IS NOT NULL
		SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE idSubOrganizacion = @SubOrganizacion

	INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista, DiasLiquidados, SubOrganizacion)
	VALUES (NULL, @Afiliacion, @Agente, NULL, 1, NULL, 31, NULL, NULL, NULL, NULL, NULL, NULL, @horas, 0, @idLiquidacion, 0, @AyudaEscolar, @Organizacion, NULL, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)
	IF @@ERROR <> 0
		SELECT @Nroerror = @@ERROR


If @NroError <> 0
	 insert into tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) values
	(@Agente, 31, convert(varchar,@NroError), getdate(), @idLiquidacion, @Organizacion, @Servicio, @idCabecera, @NroError)

END
GO
